﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;

using Urgencias.Modelo;

namespace Urgencias.Controlador
{
    class FuncionarioControlador
    {
        private static FuncionarioControlador instance;
        Funcionario f;

        public FuncionarioControlador()
        {
            f = new Funcionario();
        }

        public static FuncionarioControlador Instance
        {
            get
            {
                if (instance == null)
                {
                    instance = new FuncionarioControlador();
                }

                return instance;
            }
        }

        public bool eliminarFuncionario(string rut)
        {
            bool resultado = false;
            try
            {
                
                SqlCommand com = new SqlCommand("DELETE FROM FUNCIONARIO WHERE RUN = '" + rut + "')");
                SqlDataReader ejecutar = com.ExecuteReader();
                if (ejecutar.Read())
                {
                    resultado = true;
                }
                Conexion.Instance.Con.Close();
                return resultado;
            }
            catch (Exception)
            {
                Conexion.Instance.Con.Close();
                return resultado;
                throw;
            }            
        } 


        public Funcionario buscarFuncionarios(string rut)
        {
            try
            {
                SqlCommand com = new SqlCommand();
                

                com.CommandText = "select * from FUNCIONARIO where RUN='" + rut + "'";
                com.Connection = Conexion.Instance.Con;

                SqlDataReader ejecuta = com.ExecuteReader();

                if (ejecuta.Read() == true)
                {
                    f.ApellidoPaterno = ejecuta.GetString(ejecuta.GetOrdinal("APELLIDOPATERNO"));
                    f.ApellidoPaterno = ejecuta.GetString(ejecuta.GetOrdinal("APELLIDOMATERNO"));
                    f.Nombre = ejecuta.GetString(ejecuta.GetOrdinal("APELLIDOPATERNO"));
                    f.Run = ejecuta.GetString(ejecuta.GetOrdinal("RUN"));
                    f.FechaNacimiento = ejecuta.GetDateTime(ejecuta.GetOrdinal("FECHANACIMIENTO"));
                   string TEMP= ejecuta.GetString(ejecuta.GetOrdinal("SEXO"));
                   f.Sexo = TEMP[0];
                    f.Disponible = ejecuta.GetBoolean(ejecuta.GetOrdinal("DISPONIBILIDAD_FUNCIONARIO"));
                    Conexion.Instance.Con.Close();
                    return f;
                }
                else
                   return null;
                   // }//resultado.Add((string)(ejecuta["ApellidoPaterno"]) + (string)(ejecuta["ApellidoPaterno"]) + "," + (string)(ejecuta["ApellidoPaterno"]));
                //}
                //return resultado;
            }
            catch (Exception e)
            {
                Conexion.Instance.Con.Close();
                Console.WriteLine(e.Message);
                return null;
                throw;
            }
        }

        public bool ingresarFuncionario(string RUN, string ESPECIALIDAD_MEDICA, string NOMBRE, string APELLIDOPATERNO, string APELLIDOMATERNO, DateTime FECHANACIMIENTO, char SEXO, bool DISPONIBILIDAD_FUNCIONARIO)
        {
            /*string RUN, ESPECIALIDAD_MEDICA, NOMBRE, APELLIDOPATERNO, APELLIDOMATERNO, DISPONIBILIDAD_FUNCIONARIO;
            char SEXO;
            DateTime FECHANACIMIENTO;*/

            if (PersonaControlador.Instance.ingresarPersona(RUN, NOMBRE, APELLIDOPATERNO, APELLIDOMATERNO, FECHANACIMIENTO, SEXO))
                try
                {
                    SqlCommand com = new SqlCommand();


                    com.CommandText = "INSERT INTO FUNCIONARIO" +
                        "(RUN, NOMBRE, APELLIDOPATERNO, APELLIDOMATERNO,FECHANACIMIENTO,SEXO, DISPONIBILIDAD_FUNCIONARIO)" + "VALUES" +
                        "(@run, @nombre, @apellidopaterno, @apellidomaterno, @fechanacimiento, @sexo, @disponibilidad_funcionario)";

                    com.Parameters.AddWithValue("@run", RUN);
                    //com.Parameters.AddWithValue("@especialidad_medica", ESPECIALIDAD_MEDICA);
                    com.Parameters.AddWithValue("@nombre", NOMBRE);
                    com.Parameters.AddWithValue("@apellidopaterno", APELLIDOPATERNO);
                    com.Parameters.AddWithValue("@apellidomaterno", APELLIDOMATERNO);
                    com.Parameters.AddWithValue("@sexo", SEXO);
                    com.Parameters.AddWithValue("@fechanacimiento", FECHANACIMIENTO);
                    com.Parameters.AddWithValue("@disponibilidad_funcionario", DISPONIBILIDAD_FUNCIONARIO);

                    com.Connection = Conexion.Instance.Con;
                    SqlDataReader ejecutar = com.ExecuteReader();
                    Conexion.Instance.Con.Close();
                    return true;
                }
                catch (Exception e)
                {
                    Conexion.Instance.Con.Close();
                    Console.WriteLine(e.Message);
                    return false;
                    throw;
                }
            else
                return false;
        }
    }
}
